Modern computer systems are often made of multiple components that work collectively, each playing a role in a system's overall operation. The components may include servers, data storage devices, networking devices, software components and other pieces of hardware and/or software that enable the system to operate. These components may be distributed throughout a data center and/or even throughout multiple data centers. The transfer of information from one component to the other can involve the participation of multiple other components. For instance, an electronic communication from a client to a server may pass from one programming module to another within a computer system, over a network and/or from one programming module to another on another computer system. While on the network, the electronic communication may pass through numerous components on the network, such as firewalls, routers, switches and/or other networking devices.
In many contexts, computing devices often send and receive numerous communications to and from other computing devices over various time periods. An application on a server may, for instance, send numerous input/output operation requests to a data storage device located in a different location on a network. The application's effective operation may require effective communication with the data storage device. At the same time, a degradation in performance by a device participating in the communications may cause the effectiveness of the communications to decrease or cause the communications to cease. A malfunctioning router, for example, may cause a decrease or halt to the ability of a computer system to communicate with a data storage device. Diagnosing and repairing such problems can be very difficult given the complexities of the various devices involved.